#!/bin/bash

# Alunos:   Eliezer de Souza da Silva  RA: 124065
#           Fernanda Brandao Silva     RA: 060727
#           Michel Silva Fornaciali    RA: 071884
# IA368R: Eduardo Valle - Trabalho 3, Programa 1 - Descricao de uma imagem
# depends on commands jpegtopnm and convert



indir=detectorsDescriptors
nsize=25%
detector=h_affine.ln    # detector binary
mode_detector=-hesaff   # detector mode
mode_descriptor=sift    # descriptor mode

echo "###$1" >> log

if( expr match "$1" '.*\.jpg' >>log ); then 
	jpegtopnm $1 > nimg.pgm 2>> log ;     # converte imagem de jpg para pgm
	convert nimg.pgm -resize $nsize nimg.pgm >>log ;   # reduz o tamanho da imagem
elif( expr match "$1" '.*\.ppm' >>log); then
	convert $1 -resize $nsize nimg.pgm >>log ; #imagem de consulta
fi

# executa binario para deteccao de pontos/regioes
if [ "$detector" == "h_affine.ln" ] || [ "$detector" == "mser.ln" ] ; then 
    $indir/$detector $mode_detector -i nimg.pgm -o out >> log
elif [ "$detector" == "ebr.ln" ] || [ "$detector" == "ibr.ln" ]; then
	$indir/$detector nimg.pgm out >> log
fi	

if [ -a out ]; then
	# executa binario para obter o descritor dos pontos/regioes
	$indir/compute_descriptors.ln -$mode_descriptor -i nimg.pgm -p1 out -o2 out1 >>log  
	if [ -a out1 ];	then
		# escreve os metadados e vetores descritores na saida padrao
		tail --lines=+3 out1 | cut -d ' ' -f1,2,4,5,13-141
	
		rm out1 # remove descriptor output file
	else
		echo "None descriptor for "$1 >> log1
	fi
	rm out	# remove detector output file
else
	echo "none detector "$1 >> log1
fi

#rm log  # remove log of binaries
rm nimg.pgm  # remove converted image image
